package com.springboot.redis.demo.geohash;

import com.springboot.redis.demo.RedisClient;
import redis.clients.jedis.GeoUnit;

/**
 * 基于 GeoHash 计算用户和商家的距离
 *
 * @author: zr
 * @date: 2021-11-17
 */
public class GeoHashDemo extends RedisClient {


    /**
     * 获取Redis Key
     *
     * @return {@link String}
     * @throws
     * @date 2021-11-17
     */
    public static String getKey() {
        return "location_data";
    }

    /**
     * 添加一个地理位置
     *
     * @param name
     * @param longitude
     * @param latitude
     * @return
     * @throws
     * @date 2021-11-17
     */
    public static void addLocation(String name, double longitude, double latitude) {
        jedis.geoadd(getKey(), longitude, latitude, name);
    }

    /**
     * 获取用户到商家的距离(单位：公里)
     *
     * @param user
     * @param shop
     * @return {@link double}
     * @throws
     * @date 2021-11-17
     */
    public static double getDistance(String user, String shop) {
        return jedis.geodist(getKey(), user, shop, GeoUnit.KM);
    }

    public static void main(String[] args) {
        addLocation("张三", 116.494288, 39.8670046);
        addLocation("小吃店", 116.459612, 39.8751730);
        double distance = getDistance("张三", "小吃店");
        System.out.println("张三距离小吃店距离为：" + distance);
    }

}
